package 题目集.dfs;

import java.util.Scanner;

public class 三阶幻方 {
    static int[][] map = new int[3][3];
    static int[][] ops=new int[10][2]; //可选位置，0是x,1是y
    static boolean[] vis = new boolean[10]; //可以选择的数字
    static int n;   //可选位置的个数

    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        for (int i = 0; i < map.length; i++) {
            for (int j = 0; j < map[0].length; j++) {
                map[i][j]=sc.nextInt();
                if(map[i][j]==0){
                    ops[n][0]=i;
                    ops[n][1]=j;
                    n++;
                }else{
                    vis[map[i][j]]=true;
                }
            }
        }
        dfs(0);
        for (int i = 0; i < map.length; i++) {
            for (int j = 0; j < map[0].length; j++) {
                System.out.print(map[i][j]+" ");
            }
            System.out.println();
        }
    }
    public static boolean dfs(int i){
        if (i==n){
            return check();
        }
        for (int j = 1; j <= 9; j++) {
            if(!vis[j]){
                vis[j]=true;
                map[ops[i][0]][ops[i][1]]=j;
                if(dfs(i+1)){
                    return true;
                }
                vis[j]=false;
            }
        }
        return false;
    }
    public static boolean check(){
        int sum=map[0][0]+map[0][1]+map[0][2];
        for (int i = 1; i < 3; i++) {
            if(map[i][0]+map[i][1]+map[i][2]!=sum){
                return false;
            }
            if(map[0][i]+map[1][i]+map[2][i]!=sum){
                return false;
            }
        }
        if(map[0][0]+map[1][1]+map[2][2]!=sum){
            return false;
        }
        if(map[0][2]+map[1][1]+map[2][0]!=sum){
            return false;
        }
        return true;
    }
}
